A distributed real-time system comprises two or more subsystems that cooperatively function to carry out causally-related actions and tasks in synchronicity (or near synchronicity) with each other and with external events or dynamical states that are themselves, in turn, causally related in some way to the actions and tasks of the subsystems. The aspects of the system that make it real-time are the causal relationships of the actions and tasks of the respective subsystems, and the causal interactions of the subsystems with the external events and dynamical states “as they happen.”
In carrying out the actions and tasks, the subsystems exchange information with one another, and may interact directly or indirectly with the external events or dynamical states. Interactions between a subsystem and external events or dynamical states may include detecting, measuring, or reacting to events or changes in state, and/or causing or influencing events or changes in state, for example. Information exchanged between subsystems may include sending and/or receiving notifications or measurements of external events or dynamical states, and/or conveying signals or messages that cause the receiving subsystem(s) to interact with the external environment in some way, for instance. Hence, a subsystem typically comprises one or more components that interact (directly or indirectly) with the external environment, and one or more components that facilitate communication with one or more other subsystems. A subsystem may comprise other elements as well.
In a distributed real-time system in which two or more of the subsystems comprise some form of computing platform, including a processor and a network interface for external communications, those particular subsystems, referred to a generically as end systems, are typically interconnected by a communication network. Functioning as it does to support communication between end systems of a distributed real-time system, such a network is referred to as a real-time network. That is, a real-time network is one that communicatively connects end systems of a distributed real-time system. The information exchanged between end systems in the service of the real-time functionality in a real-time system is carried over the real-time network in the form of messages, referred to as real-time messages.
One example of a distributed real-time system and network is a distributed, multi-participant, interactive computer video game, in which a network of computer stations generates a synthetic environment concurrently presented in an identical evolutionary state on each station to a participant at that station. Each participant may interact through the computer station with the synthetic environment presented at his or her station, and the resulting, temporally-sequenced, concurrent interactions of all of the participants, exchanged in real-time messages, are used to synchronously update the synthetic environments rendered at each computer station.
Another example of a real-time system and network is an avionics subsystem, in which a network of end systems controls various flight-control and stabilization functions of an aircraft. For instance, one of the end systems may comprise actuators which, under computer control, cause a certain wing surface to move, while another one of the end systems may comprise a computer that converts user input, such as continuous movement of a control lever, into a sequence of commands to move the wing surface, and synchronously sends the commands in real-time messages via the network to the first end system in order to cause the wing surface to move in synchronicity with the continuously-changing user input. Other end systems may continuously measure environment variables, such as air speed or aircraft attitude, and continuously (and synchronously) transmit the measurements in real-time messages via the network to other end systems, which in turn use the measurements as feedback to flight-control functions that then synchronously effect, through commanded flight-control actions, the environment variables being measured. These examples are illustrative only, and many other are possible.
In both the computer-video game example and the avionics subsystem example above, correct operation of the real-time system requires, first, that transmissions of real-time messages between end systems are timely, in order for the respective end systems to keep pace with each other and with the external events and dynamical states, and, second, that the causal relationships of the end systems' real-time messages with each other, as well as the causal relationships between the end systems' actions and tasks and the external environment, are strictly maintained. The first requirement ultimately translates to requirements for the performance characteristics of the real-time network that interconnects the end systems. The second requirement translates to an additional requirement that all of the end systems must operate according to synchronized clocks. While failure to meet either of these requirements may result in incorrect operation of the real-time system, the consequences of incorrect operation are very different for the two example real-time systems. Clearly, in the case of an avionics subsystem, correct operation of the real-time system and network is critical at least for reasons of safety.
Real-time networks that support systems that perform critical functionality, such as safety-related applications, are referred to as hard real-time networks. The performance requirements of hard real-time networks are typically stated in terms of reliability as well as limits or bounds on transmission delay and on variations in delay of real-time messages. The requirement for synchronization of end-system clocks is typically stated in terms of precision, or tolerance of disagreement between clocks. The requirements for both the bounds on network performance and the precision of clock synchronization are determined according to the particular application of the real-time system in question.
The synchronization of end-system clocks in a real-time network may further require that all clocks are synchronized with each other and with an external global clock, such as that associated with a global positioning satellite (GPS) system, for example. Alternatively, a real-time system may only require internal synchronization among the end-system clocks, without the need for strict synchronization with an external global clock. In either case, the precision required is again determined by the particular application.
Synchronization may be achieved in a number of ways, but generally involves either direct distribution to each end system of a common clock source, for example via a hard-wired connection, or execution of a distributed synchronization algorithm on each end system. In the latter case, each end system periodically exchanges synchronization messages with some or all of the other end systems, wherein each message carries time stamp information generated by the sending end system, and is used by the algorithm of the receiving end system to compute an adjustment or correction to the clock of the receiving end system. Further in this case, the synchronization messages themselves comprise real-time messages of the real-time system, and hence the precision with which end system clocks may be synchronized is itself tied to the performance characteristics of the real-time network.
An important element in the design of a real-time network is the determinism of transmission delay of real-time messages between any two end systems, because it introduces a degree of predictability into the performance of the network, and thereby tends to increase the precision of the performance bounds of the network, as well the precision of the synchronization of end system clocks achievable by distributed synchronization algorithms. Conversely, variability in the transmission delay of real-time messages between end systems, commonly referred to as jitter, reduces the accuracy with which network performance (and performance bounds) may be determined, and hence tends to decrease the precision with which end-system clocks may be synchronized by distributed algorithms.
From the time that real-time messages are first generated by a source end system until they arrive at a destination end systems, there may be multiple sources of jitter. For example, variability in the processor load on the source end system may introduce jitter into the time consumed in the generation of identical or similar types of real-time messages, even before messages are presented to the network interface of the source end system for transmission on the network to the intended destination end systems. Further, the queuing of outbound messages in the network interface on the source end system may introduce jitter in the departure of real-time messages from the network interface. Once a real-time message begins traversing the network, various network elements along the message's path may then introduce transmission jitter.